home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKit / Palettes / MiscCalendarPalette / MiscCalendarView.subproj / DateSelectionCell.m < prev    next >
Text File  |  1995-04-12  |  5KB  |  267 lines

  1. // Copyright (C) 1995 Jon Kutemeier
  2. // Use is governed by the MiscKit license
  3.  
  4. /******************************************************************************
  5.  *      $Log: DateSelectionCell.m,v $
  6. # Revision 1.1  1993/10/08  22:04:14  jkute
  7. # Checkpoint
  8. #
  9. # Revision 1.1  1993/04/13  18:02:34  gpopick
  10. # done
  11. #
  12. # Revision 1.1  1993/01/29  19:45:21  jkute
  13. # *** empty log message ***
  14. #
  15. # Revision 1.1  1992/11/17  20:48:22  jkute
  16. # Initial revision
  17. #
  18. ******************************************************************************/
  19. static char *ident = "$Id: DateSelectionCell.m,v 1.1 1993/10/08 22:04:14 jkute Exp $";
  20. static int __hack(int x){if(x)return x;else return __hack((int)*ident);}
  21. /*****************************************************************************/
  22.  
  23. #import <strings.h>
  24.  
  25. #import <dpsclient/psops.h>
  26. #import <appkit/graphics.h>
  27. #import <appkit/color.h>
  28. #import <appkit/Font.h>
  29. #import <appkit/Text.h>
  30.  
  31. #import "DateSelectionCell.h"
  32.  
  33. #define COLOR_DKBLUE    NXConvertRGBToColor(34.0/255.0, 68.0/255.0, 119.0/255.0)
  34.  
  35. @implementation DateSelectionCell
  36.  
  37. - init
  38. {
  39.     id retCode;
  40.  
  41.     retCode = [super init];
  42.  
  43.     newCellFont = [Font newFont:"Helvetica" size:10 style:0
  44.            matrix:NX_FLIPPEDMATRIX];
  45.     [Font setUserFont:newCellFont];
  46.  
  47.     [self setTextColor:NX_COLORWHITE];
  48.     [self setHighlightTextColor:NX_COLORBLACK];
  49.     [self setBackgroundColor:COLOR_DKBLUE];
  50.     [self setHighlightColor:NX_COLORWHITE];
  51.  
  52.     [self setDrawRightEdge:NO];
  53.     [self setDrawEntireBottomEdge:YES];
  54.  
  55.     return retCode;
  56. }
  57.  
  58. - setTextColor:(NXColor)aColor
  59. {
  60.     textColor = aColor;
  61.  
  62.     return self;
  63. }
  64.  
  65. - (NXColor)textColor
  66. {
  67.     return textColor;
  68. }
  69.  
  70. - setHighlightTextColor:(NXColor)aColor
  71. {
  72.     highlightTextColor = aColor;
  73.  
  74.     return self;
  75. }
  76.  
  77. - (NXColor)highlightTextColor
  78. {
  79.     return highlightTextColor;
  80. }
  81.  
  82. - setBackgroundColor:(NXColor)aColor
  83. {
  84.     backgroundColor = aColor;
  85.  
  86.     return self;
  87. }
  88.  
  89. - (NXColor)backgroundColor
  90. {
  91.     return backgroundColor;
  92. }
  93.  
  94. - setHighlightColor:(NXColor)aColor
  95. {
  96.     highlightColor = aColor;
  97.  
  98.     return self;
  99. }
  100.  
  101. - (NXColor)highlightColor
  102. {
  103.     return highlightColor;
  104. }
  105.  
  106. - setDrawRightEdge:(BOOL)yn
  107. {
  108.     drawRightEdge = yn;
  109.  
  110.     return self;
  111. }
  112.  
  113. - (BOOL)drawRightEdge
  114. {
  115.     return drawRightEdge;
  116. }
  117.  
  118. - setDrawEntireBottomEdge:(BOOL)yn
  119. {
  120.     drawEntireBottomEdge = yn;
  121.  
  122.     return self;
  123. }
  124.  
  125. - (BOOL)drawEntireBottomEdge
  126. {
  127.     return drawEntireBottomEdge;
  128. }
  129.  
  130. - drawInside:(const NXRect *)cellFrame inView:controlView
  131. {
  132.     float    yPos, 
  133.         xPos,
  134.         width;
  135.     const char    *stringValue;
  136.     NXRect     rectArray[2];
  137.     int        numOfRects;
  138.  
  139.     stringValue = [self stringValue];
  140.  
  141.     /* erase the cell */
  142.  
  143.     NXSetColor((cFlags1.state || cFlags1.highlighted) ? [self highlightColor]
  144.            : [self backgroundColor]);
  145.     NXRectFill(cellFrame);
  146.     
  147.     if (stringValue && *stringValue)
  148.     {
  149.     /* set the font according to our drawing status */
  150.  
  151.     if (NXDrawingStatus != NX_DRAWING)
  152.       [newCellFont set];
  153.     else
  154.       [[newCellFont screenFont] set];
  155.     
  156.     /* draw the text */
  157.  
  158.     NXSetColor([self textColor]);
  159.  
  160.     if ( (cFlags1.state || cFlags1.highlighted) )
  161.       NXSetColor([self highlightTextColor]);
  162.  
  163.     yPos = NX_Y(cellFrame) + 10.0;// + lineHeight - descender;
  164.     xPos = NX_X(cellFrame) + ((NX_WIDTH(cellFrame) - 
  165.                    [newCellFont getWidthOf:stringValue])/2.0);
  166.  
  167.     PSmoveto( xPos, yPos );
  168.  
  169.     PSshow( stringValue );
  170.     }
  171.  
  172.     NXSetColor(NX_COLORBLACK);
  173.  
  174.     numOfRects = 1;
  175.  
  176.     if (![self drawEntireBottomEdge])
  177.     {
  178.     xPos = NX_X(cellFrame) + 1.0;
  179.     width = NX_WIDTH(cellFrame) - 1.0;
  180.     }
  181.     else
  182.     {
  183.     xPos = NX_X(cellFrame);
  184.     width = NX_WIDTH(cellFrame);
  185.     }
  186.  
  187.     NXSetRect(&(rectArray[0]), xPos, NX_MAXY(cellFrame), width, 1.0);
  188.  
  189.     if ([self drawRightEdge])
  190.     {
  191.     NXSetRect(&(rectArray[1]), NX_MAXX(cellFrame), 
  192.           NX_Y(cellFrame) + 1.0, 1.0, NX_HEIGHT(cellFrame));
  193.     numOfRects++;
  194.     }
  195.  
  196.     NXRectFillList(rectArray, numOfRects);
  197.  
  198.     return self;
  199. }
  200.  
  201. - highlight:(const NXRect *)cellFrame inView:controlView lit:(BOOL)flag
  202. {
  203.     if (cFlags1.highlighted != flag) 
  204.     {
  205.     cFlags1.highlighted = flag;
  206.  
  207.     [self drawInside:cellFrame inView:controlView];
  208.     }
  209.  
  210.     return self;
  211. }
  212.  
  213. - read:(NXTypedStream *)aStream
  214. {
  215.     float    red,
  216.         green,
  217.         blue;
  218.  
  219.     [super read:aStream];
  220.  
  221.     NXReadTypes(aStream, "fff", &red, &green, &blue);
  222.     textColor = NXConvertRGBToColor(red, green, blue);
  223.  
  224.     NXReadTypes(aStream, "fff", &red, &green, &blue);
  225.     highlightTextColor = NXConvertRGBToColor(red, green, blue);
  226.  
  227.     NXReadTypes(aStream, "fff", &red, &green, &blue);
  228.     backgroundColor = NXConvertRGBToColor(red, green, blue);
  229.  
  230.     NXReadTypes(aStream, "fff", &red, &green, &blue);
  231.     highlightColor = NXConvertRGBToColor(red, green, blue);
  232.  
  233.     NXReadTypes(aStream, "@cc", &newCellFont, &drawEntireBottomEdge, 
  234.         &drawRightEdge);
  235.  
  236.     return self;
  237. }
  238.  
  239. - write:(NXTypedStream *)aStream
  240. {
  241.     float    red,
  242.         green,
  243.         blue;
  244.  
  245.     [super write:aStream];
  246.  
  247.     NXConvertColorToRGBA(textColor, &red, &green, &blue, 0);
  248.     NXWriteTypes(aStream, "fff", &red, &green, &blue);
  249.  
  250.     NXConvertColorToRGBA(highlightTextColor, &red, &green, &blue, 0);
  251.     NXWriteTypes(aStream, "fff", &red, &green, &blue);
  252.  
  253.     NXConvertColorToRGBA(backgroundColor, &red, &green, &blue, 0);
  254.     NXWriteTypes(aStream, "fff", &red, &green, &blue);
  255.  
  256.     NXConvertColorToRGBA(highlightColor, &red, &green, &blue, 0);
  257.     NXWriteTypes(aStream, "fff", &red, &green, &blue);
  258.  
  259.     NXWriteTypes(aStream, "@cc", &newCellFont, &drawEntireBottomEdge,
  260.          &drawRightEdge);
  261.  
  262.     return self;
  263. }
  264.  
  265. @end
  266.  
  267.